續昨天成功的對模型進行訓練,並且將訓練過程以文字與數字的形式印出在執行結果,那麼今天我們要用另一種不同的角度,來檢視訓練過程,看看會不會有什麼有趣的發現。
咦?我們不是昨天最後的步驟,才設定了verbose參數印出訓練過程嗎,怎麼又要再來一次。其實有些不一樣哦,定義show_train_history可以幫助我們讀取train_history內的資訊,並畫出準確率(accuracy)在訓練週期中的變化曲線,以圖表的方式呈現訓練過程,藉此觀察出模型訓練時所發生的一些重要現象。程式碼的部分,我們先import要用的模組,接著定義show_train_history函數,取用train_history變數中所記錄下來的訓練資料和驗證資料的執行結果,再分別設定圖表的標題、x軸與y軸代表的意義、還有圖表呈現的格式,最終畫出曲線及圖表就完成了。那為什麼訓練的準確度曲線會超越驗證的準確度曲線呢?這就好比對一群學生進行測驗,如果測驗所出的題目是出自老師曾經給過的考古題題庫,自然而然學生的成績表現會比較優異,然而如果是出自另外準備的一份獨立題庫,學生成績表現則沒有那麼突出,但相對的結果也比較客觀。
從執行結果可以看見,不管是訓練還是驗證的資料,在模型訓練過程中誤差皆為越來越小的趨勢,與先前的準確率曲線變化恰巧相反,且在訓練週期後期loss訓練的誤差值較val_loss驗證的誤差值還來的低。可知模型在訓練及錯誤中學習,辨識能力逐漸進步。